fadvice on buffer file
authorJeroen van der Heijden <jeroen@transceptor.technology>
Fri, 28 Sep 2018 14:59:17 +0000 (16:59 +0200)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Fri, 28 Sep 2018 14:59:17 +0000 (16:59 +0200)
src/siri/db/buffer.c

index b6a0ab80e4dfde1bd24e4770776f4d6a42546737..9137b90f4f64f43238144257e1ac5ac06f3bd2ef 100644 (file)
@@ -116,6 +116,7 @@ int siridb_buffer_fsync(siridb_t * siridb)
  */
 int siridb_buffer_open(siridb_t * siridb)
 {
+    int buffer_fd, rc;
     siridb_misc_get_fn(fn, siridb->buffer_path, SIRIDB_BUFFER_FN)
 
     if ((siridb->buffer_fp = fopen(fn, "r+")) == NULL)
@@ -124,6 +125,20 @@ int siridb_buffer_open(siridb_t * siridb)
         return -1;
     }
 
+    buffer_fd = fileno(siridb->buffer_fp);
+
+    if (buffer_fd == -1)
+    {
+        log_critical("Cannot get file descriptor: '%s'", fn);
+        return -1;
+    }
+
+    rc = posix_fadvise(buffer_fd, 0, 0, POSIX_FADV_RANDOM|POSIX_FADV_DONTNEED);
+    if (rc)
+    {
+        log_warning("Cannot set advice for file access: '%s' (%d)", fn, rc);
+    }
+
     return 0;
 }